home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / VERINFO.PAK / VERINFO.CPP < prev    next >
C/C++ Source or Header  |  1997-05-06  |  8KB  |  223 lines

  1. //----------------------------------------------------------------------------
  2. // Owl
  3. // Copyright (c) 1996, 1996 by Borland International, All Rights Reserved
  4. //
  5. // Sample illustrating information obtainable from TModuleVersionInfo
  6. //----------------------------------------------------------------------------
  7. #include <owl/pch.h>
  8.  
  9. #include <owl/opensave.h>
  10. #include <owl/docview.h>
  11. #include "verinfo.rh"
  12.  
  13. int PASCAL WinMain(HINSTANCE instance, HINSTANCE, LPSTR, int)
  14. {
  15.   TFileOpenDialog::TData data;
  16.   TFileOpenDialog dlg(0, data);
  17.   if (dlg.DoExecute() != IDOK)
  18.     return 1;
  19.  
  20.   char msg[2048];
  21.   char* fileOS;
  22.   char* fileType;
  23.   char fileSubType[30];
  24.   char fileDateStr[50];
  25.  
  26.   char* subTypeStr[] = {"UnknownDriver",
  27.                         "PtrDriver",
  28.                         "KybdDriver",
  29.                         "LangDriver",
  30.                         "DisplayDriver",
  31.                         "MouseDriver",
  32.                         "NtwkDriver",
  33.                         "SysDriver",
  34.                         "InstallableDriver",
  35.                         "SoundDriver",
  36.                         "UnknownFont",
  37.                         "RasterFont",
  38.                         "VectorFont",
  39.                         "TrueTypeFont"};
  40.  
  41.   try {
  42.     TModuleVersionInfo verInfo(data.FileName);
  43.  
  44.   switch (verInfo.GetFileOS()) {
  45.     case TModuleVersionInfo::OSUnknown:
  46.       fileOS = "OSUNKNOWN";
  47.       break;
  48.     case TModuleVersionInfo::DOS:
  49.       fileOS = "DOS";
  50.       break;
  51.     case TModuleVersionInfo::OS216:
  52.       fileOS = "OS216";
  53.       break;
  54.     case TModuleVersionInfo::OS232:
  55.       fileOS = "OS232";
  56.       break;
  57.     case TModuleVersionInfo::NT:
  58.       fileOS = "NT";
  59.       break;
  60.     case TModuleVersionInfo::Windows16:
  61.       fileOS = "Windows16";
  62.       break;
  63.     case TModuleVersionInfo::PM16:
  64.       fileOS = "PM16";
  65.       break;
  66.     case TModuleVersionInfo::PM32:
  67.       fileOS = "PM32";
  68.       break;
  69.     case TModuleVersionInfo::Windows32:
  70.       fileOS = "Windows32";
  71.       break;
  72.     case TModuleVersionInfo::DosWindows16:
  73.       fileOS = "DosWindows16";
  74.       break;
  75.     case TModuleVersionInfo::DosWindows32:
  76.       fileOS = "DosWindows32";
  77.       break;
  78.     case TModuleVersionInfo::OS216PM16:
  79.       fileOS = "OS216PM16";
  80.       break;
  81.     case TModuleVersionInfo::OS232PM32:
  82.       fileOS = "OS232PM32";
  83.       break;
  84.     case TModuleVersionInfo::NTWindows32:
  85.       fileOS = "NTWindows32";
  86.       break;
  87.     default:
  88.       fileOS = "";
  89.   }
  90.  
  91.   switch (verInfo.GetFileType()) {
  92.     case TModuleVersionInfo::TypeUnknown:
  93.       fileType = "TypeUnknown";
  94.       break;
  95.     case TModuleVersionInfo::App:
  96.       fileType = "App";
  97.       break;
  98.     case TModuleVersionInfo::DLL:
  99.       fileType = "DLL";
  100.       break;
  101.     case TModuleVersionInfo::DevDriver:
  102.       fileType = "DevDriver";
  103.       break;
  104.     case TModuleVersionInfo::Font:
  105.       fileType = "Font";
  106.       break;
  107.     case TModuleVersionInfo::VirtDevice:
  108.       fileType = "VirtDevice";
  109.       break;
  110.     case TModuleVersionInfo::StaticLib:
  111.       fileType = "StaticLib";
  112.       break;
  113.     default:
  114.       fileType = "";
  115.   }
  116.  
  117.   if (verInfo.GetFileType() == TModuleVersionInfo::DevDriver ||
  118.       verInfo.GetFileType() == TModuleVersionInfo::Font)
  119.     strcpy(fileSubType, subTypeStr[(int)verInfo.GetFileSubType()]);
  120.   else
  121.     wsprintf(fileSubType, "%ld", (uint32)verInfo.GetFileSubType());
  122.  
  123.   FILETIME fileDate = verInfo.GetFileDate();
  124.   if (fileDate.dwLowDateTime || fileDate.dwHighDateTime)
  125.     FormatFileTime(&fileDate, fileDateStr, sizeof (fileDateStr));
  126.   else
  127.     strcpy(fileDateStr, "N/A");
  128.  
  129.   const char far* fileDesc;
  130.   const char far* fileVersion;
  131.   const char far* internalName;
  132.   const char far* legalCopyright;
  133.   const char far* originalFilename;
  134.   const char far* productName;
  135.   const char far* productVersion;
  136.   const char far* specialBuild;
  137.   if (!verInfo.GetFileDescription(fileDesc))
  138.     fileDesc = "N/A";
  139.   if (!verInfo.GetFileVersion(fileVersion))
  140.     fileVersion = "N/A";
  141.   if (!verInfo.GetInternalName(internalName))
  142.     internalName = "N/A";
  143.   if (!verInfo.GetLegalCopyright(legalCopyright))
  144.     legalCopyright = "N/A";
  145.   if (!verInfo.GetOriginalFilename(originalFilename))
  146.     originalFilename = "N/A";
  147.   if (!verInfo.GetProductName(productName))
  148.     productName = "N/A";
  149.   if (!verInfo.GetProductVersion(productVersion))
  150.     productVersion = "N/A";
  151.   if (!verInfo.GetSpecialBuild(specialBuild))
  152.     specialBuild = "N/A";
  153.   uint lang = verInfo.GetLanguage();
  154.  
  155.   wsprintf(msg,"Signature                     %lu\n" //uint32
  156.                "Structure Version:            %lu\n" //uint32
  157.                "File Version(Hi 32 bits):     %lu\n" //uint32
  158.                "File Version(Lo 32 bits):     %lu\n" //uint32
  159.                "Product Version (Hi 32 bits): %lu\n" //uint32
  160.                "Product Version (Lo 32 bits): %lu\n" //uint32
  161.                "FileFlagsMask:                %lu\n" //uint32
  162.                "File Flags:                   %lu\n" //uint32
  163.                "Debug:                        %c\n"  //bool->char
  164.                "Inferred Version Information: %c\n"  //bool->char
  165.                "Patched:                      %c\n"  //bool->char
  166.                "Pre-release:                  %c\n"  //bool->char
  167.                "Private Build:                %c\n"  //bool->char
  168.                "Special Build:                %c",   //bool->char
  169.                verInfo.GetSignature(), //uint32
  170.                verInfo.GetStrucVersion(), //uint32
  171.                verInfo.GetFileVersionMS(), //uint32
  172.                verInfo.GetFileVersionLS(), //uint32
  173.                verInfo.GetProductVersionMS(), //uint32
  174.                verInfo.GetProductVersionLS(), //uint32
  175.                verInfo.GetFileFlagsMask(), //uint32
  176.                verInfo.GetFileFlags(), //uint32
  177.                (verInfo.IsDebug())? '1': '0', //bool->char
  178.                (verInfo.InfoInferred())? '1': '0', //bool->char
  179.                (verInfo.IsPatched())? '1': '0', //bool->char
  180.                (verInfo.IsPreRelease())? '1': '0', //bool->char
  181.                (verInfo.IsPrivateBuild())? '1': '0', //bool->char
  182.                (verInfo.IsSpecialBuild())? '1': '0'); //bool->char
  183.   MessageBox(0, msg, "Module Version Info (Page 1 of 2)", MB_OK);
  184.  
  185.   wsprintf(msg,"File OS:                      %s\n"  //uint32->char*
  186.                "File Type:                    %s\n"  //TModuleVersionInfo::TFileType->char*
  187.                "File Subtype:                 %s\n"  //uint32->char*
  188.                "File Date:                    %s\n"   //FILETIME->char*
  189.                "File Description:             %s\n"
  190.                "File Version String:          %s\n"
  191.                "Internal Name:                %s\n"
  192.                "LegalCopyright:               %s\n"
  193.                "Original Filename:            %s\n"
  194.                "Product Name:                 %s\n"
  195.                "Product Version String:       %s\n"
  196.                "Special Build String:         %s\n"
  197.                "Language:                     %u\n"
  198.                "Language Name:                %s",
  199.                fileOS, //uint32->char*
  200.                fileType, //TModuleVersionInfo::TFileType->char*
  201.                fileSubType, //uint32->char*
  202.                fileDateStr, //FILETIME->char*
  203.                fileDesc,
  204.                fileVersion,
  205.                internalName,
  206.                legalCopyright,
  207.                originalFilename,
  208.                productName,
  209.                productVersion,
  210.                specialBuild,
  211.                lang,
  212.                verInfo.GetLanguageName().c_str());
  213.   MessageBox(0, msg, "Module Version Info (Page 2 of 2)", MB_OK);
  214.   return 0;
  215.   }
  216.   catch (...) {
  217.     char errMsg[200];
  218.     LoadString(instance, IDS_NOSUCHFILE, errMsg, sizeof (errMsg));
  219.     MessageBox(0, errMsg, "VerInfo", MB_OK);
  220.     return 1;
  221.   }
  222. }
  223.